package site.codeyin.javautils.controller.exception;

import lombok.SneakyThrows;
import java.io.IOException;  
  
public class SneakyThrowsExample {  
  
    // 使用@SneakyThrows注解的方法，该方法可能会抛出IOException（受检异常）  
    @SneakyThrows
    public void readFile(String filePath) {  
        // 假设这里有一个读取文件的操作，它可能会抛出IOException  
        // 由于使用了@SneakyThrows，我们不需要在这里显式地捕获或声明抛出IOException  
        // 例如，使用Files.readAllLines(Paths.get(filePath))可能会抛出IOException  
        // 但在这个示例中，我们仅仅模拟这个行为  
        throw new IOException("Simulated IO Exception for demonstration purposes");  
    }  
  
    public static void main(String[] args) {  
        SneakyThrowsExample example = new SneakyThrowsExample();  
//        try {
            example.readFile("some/file/path.txt");  
//        } catch (RuntimeException e) {
//            // 由于@SneakyThrows会将受检异常转换为非受检异常（RuntimeException），
//            // 因此我们需要在这里捕获RuntimeException或其子类
//            if (e.getCause() instanceof IOException) {
//                // 处理IO异常
//                System.err.println("Caught IOException: " + e.getCause().getMessage());
//            } else {
//                // 处理其他可能的RuntimeException
//                e.printStackTrace();
//            }
//        }
    }  
}